home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap;
-
- import java.io.IOException;
- import java.util.Enumeration;
- import java.util.StringTokenizer;
- import java.util.Vector;
- import netscape.ldap.ber.stream.BERConstruct;
- import netscape.ldap.ber.stream.BERElement;
- import netscape.ldap.ber.stream.BEROctetString;
- import netscape.ldap.ber.stream.BERSequence;
- import netscape.ldap.ber.stream.BERSet;
-
- public class LDAPAttribute {
- private String name;
- private byte[] nameBuf;
- private Object[] values = new Object[0];
-
- public LDAPAttribute(LDAPAttribute var1) {
- this.name = var1.name;
- this.nameBuf = var1.nameBuf;
- this.values = new Object[var1.values.length];
-
- for(int var2 = 0; var2 < var1.values.length; ++var2) {
- this.values[var2] = new byte[((byte[])var1.values[var2]).length];
- System.arraycopy((byte[])var1.values[var2], 0, (byte[])this.values[var2], 0, ((byte[])var1.values[var2]).length);
- }
-
- }
-
- public LDAPAttribute(String var1) {
- this.name = var1;
- }
-
- public LDAPAttribute(String var1, byte[] var2) {
- this.name = var1;
- this.addValue(var2);
- }
-
- public LDAPAttribute(String var1, String var2) {
- this.name = var1;
- this.addValue(var2);
- }
-
- public LDAPAttribute(String var1, String[] var2) {
- this.name = var1;
- if (var2 != null) {
- this.setValues(var2);
- }
-
- }
-
- public LDAPAttribute(BERElement var1) throws IOException {
- BERSequence var2 = (BERSequence)var1;
- BEROctetString var3 = (BEROctetString)((BERConstruct)var2).elementAt(0);
- this.nameBuf = var3.getValue();
- BERSet var4 = (BERSet)((BERConstruct)var2).elementAt(1);
- if (((BERConstruct)var4).size() > 0) {
- Object[] var5 = new Object[((BERConstruct)var4).size()];
-
- for(int var6 = 0; var6 < ((BERConstruct)var4).size(); ++var6) {
- var5[var6] = ((BEROctetString)((BERConstruct)var4).elementAt(var6)).getValue();
- }
-
- this.setValues(var5);
- }
-
- }
-
- public int size() {
- return this.values.length;
- }
-
- public Enumeration getStringValues() {
- Vector var1 = new Vector();
- synchronized(this){}
-
- Object var2;
- try {
- try {
- for(int var5 = 0; var5 < this.values.length; ++var5) {
- if (this.values[var5] != null) {
- var1.addElement(new String((byte[])this.values[var5], "UTF8"));
- } else {
- var1.addElement(new String(""));
- }
- }
-
- return var1.elements();
- } catch (Exception var8) {
- var2 = null;
- }
- } catch (Throwable var9) {
- throw var9;
- }
-
- return (Enumeration)var2;
- }
-
- public Enumeration getByteValues() {
- Vector var1 = new Vector();
- synchronized(this){}
-
- try {
- for(int var4 = 0; var4 < this.values.length; ++var4) {
- if (this.values[var4] != null) {
- var1.addElement(this.values[var4]);
- } else {
- var1.addElement(new byte[0]);
- }
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- return var1.elements();
- }
-
- public String getName() {
- if (this.name == null && this.nameBuf != null) {
- try {
- this.name = new String(this.nameBuf, "UTF8");
- } catch (Throwable var1) {
- }
- }
-
- return this.name;
- }
-
- public static String[] getSubtypes(String var0) {
- StringTokenizer var1 = new StringTokenizer(var0, ";");
- if (!var1.hasMoreElements()) {
- return null;
- } else {
- var1.nextElement();
- String[] var2 = new String[var1.countTokens()];
-
- for(int var3 = 0; var1.hasMoreElements(); var2[var3++] = (String)var1.nextElement()) {
- }
-
- return var2;
- }
- }
-
- public String[] getSubtypes() {
- return getSubtypes(this.getName());
- }
-
- public String getLangSubtype() {
- String[] var1 = this.getSubtypes();
- if (var1 != null) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- if (var1[var2].length() >= 5 && var1[var2].substring(0, 5).equalsIgnoreCase("lang-")) {
- return var1[var2];
- }
- }
- }
-
- return null;
- }
-
- public static String getBaseName(String var0) {
- String var1 = var0;
- StringTokenizer var2 = new StringTokenizer(var0, ";");
- if (var2.hasMoreElements()) {
- var1 = (String)var2.nextElement();
- }
-
- return var1;
- }
-
- public String getBaseName() {
- return getBaseName(this.getName());
- }
-
- public boolean hasSubtype(String var1) {
- String[] var2 = this.getSubtypes();
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- if (var1.equalsIgnoreCase(var2[var3])) {
- return true;
- }
- }
-
- return false;
- }
-
- public boolean hasSubtypes(String[] var1) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- if (!this.hasSubtype(var1[var2])) {
- return false;
- }
- }
-
- return true;
- }
-
- public synchronized void addValue(String var1) {
- if (var1 != null) {
- try {
- byte[] var2 = var1.getBytes("UTF8");
- this.addValue(var2);
- } catch (Throwable var3) {
- }
- }
- }
-
- protected void setValues(String[] var1) {
- Object[] var2;
- if (var1 != null) {
- var2 = new Object[var1.length];
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- try {
- var2[var3] = var1[var3].getBytes("UTF8");
- } catch (Throwable var4) {
- var2[var3] = new byte[0];
- }
- }
- } else {
- var2 = new Object[0];
- }
-
- this.setValues(var2);
- }
-
- public synchronized void addValue(byte[] var1) {
- if (var1 != null) {
- Object[] var2 = new Object[this.values.length + 1];
-
- for(int var3 = 0; var3 < this.values.length; ++var3) {
- var2[var3] = this.values[var3];
- }
-
- var2[this.values.length] = var1;
- this.values = var2;
- }
-
- }
-
- protected synchronized void setValues(Object[] var1) {
- this.values = var1;
- }
-
- public synchronized void removeValue(String var1) {
- if (var1 != null) {
- try {
- byte[] var2 = var1.getBytes("UTF8");
- this.removeValue(var2);
- } catch (Throwable var3) {
- }
- }
- }
-
- public synchronized void removeValue(byte[] var1) {
- if (var1 != null && this.values != null && this.values.length >= 1) {
- int var2 = -1;
-
- for(int var3 = 0; var3 < this.values.length; ++var3) {
- if (equalValue(var1, (byte[])this.values[var3])) {
- var2 = var3;
- break;
- }
- }
-
- if (var2 >= 0) {
- Object[] var4 = new Object[this.values.length - 1];
- int var5 = 0;
-
- for(int var6 = 0; var6 < this.values.length; ++var6) {
- if (var6 != var2) {
- var4[var5++] = this.values[var6];
- }
- }
-
- this.values = var4;
- }
-
- }
- }
-
- private static boolean equalValue(byte[] var0, byte[] var1) {
- if (var0.length != var1.length) {
- return false;
- } else {
- for(int var2 = 0; var2 < var0.length; ++var2) {
- if (var0[var2] != var1[var2]) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public BERElement getBERElement() {
- try {
- BERSequence var1 = new BERSequence();
- ((BERConstruct)var1).addElement(new BEROctetString(this.getName()));
- BERSet var2 = new BERSet();
-
- for(int var3 = 0; var3 < this.values.length; ++var3) {
- ((BERConstruct)var2).addElement(new BEROctetString((byte[])this.values[var3]));
- }
-
- ((BERConstruct)var1).addElement(var2);
- return var1;
- } catch (IOException var4) {
- return null;
- }
- }
-
- private String getParamString() {
- String var1 = "";
- if (this.values.length > 0) {
- for(int var2 = 0; var2 < this.values.length; ++var2) {
- if (var2 != 0) {
- var1 = var1 + ",";
- }
-
- byte[] var3 = (byte[])this.values[var2];
-
- try {
- var1 = var1 + new String(var3, "UTF8");
- } catch (Exception var4) {
- if (var3 != null) {
- var1 = var1 + var3.length + " bytes";
- } else {
- var1 = var1 + "null value";
- }
- }
- }
- }
-
- return "{type='" + this.getName() + "', values='" + var1 + "'}";
- }
-
- public String toString() {
- return "LDAPAttribute " + this.getParamString();
- }
- }
-